package mws.redis.src.config;


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.time.Duration;

@Data
@ConfigurationProperties(prefix = RedisOfProperties.PREFIX)
public class RedisOfProperties {

    /**
     * mws:
     *   redis:
     *     of:
     *       serializer-type: 1
     *       host: 192.168.1.100
     *       port: 6379
     *       password: redis123
     *       database-num: 1
     *       lettuce:
     *         pool:
     *           max-active: 16
     *           max-idle: 8
     *           min-idle: 2
     *           max-wait: 1000ms
     *         timeout: 5000ms
     */

    public static final String PREFIX = "redis.mws.of";


    private Integer serializerType;

    private String host;

    private Integer port;

    private String password;

    private Integer databaseNum;
    /**
     * Lettuce连接池配置
     */
    private LettucePool lettuce = new LettucePool();

    @Data
    public static class LettucePool {
        /**
         * 最大连接数（默认8，-1表示无限制）
         */
        private Integer maxActive = 8;

        /**
         * 最大空闲连接（默认8）
         */
        private Integer maxIdle = 8;

        /**
         * 最小空闲连接（默认0）
         */
        private Integer minIdle = 0;

        /**
         * 连接池最大阻塞等待时间（默认-1ms表示无限制）
         */
        private Duration maxWait = Duration.ofMillis(-1);

        /**
         * 连接超时时间（默认3000ms）
         */
        private Duration timeout = Duration.ofMillis(3000);

        /**
         * 关闭超时时间（默认100ms）
         */
        private Duration shutdownTimeout = Duration.ofMillis(100);
    }


}
